home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / taropyon / cci / cci.doc next >
Text File  |  1993-11-30  |  17KB  |  446 lines

  1. ==========================================================================
  2.                  C language interpreter CCI ver.1.01
  3.                                             (C) Copyright 1993, TaroPYON
  4. ==========================================================================
  5.  
  6.  HEwin の各種カスタマイズ,機能拡張用に内蔵されているC言語ライクなインタ
  7. プリタ言語,CCI のスタンドアローン版です。すなわち,HEwin からCCI 部分だけ
  8. を取り出したものです。
  9.  
  10.  なお,このプログラムはネイティブモードの子プロセスプログラムとしても使え
  11. るように作成されているため,HEwin の中から起動することもできます。
  12.  
  13.  
  14. ●収録ファイル一覧
  15.  
  16.   ┌───────┬───────────────────────┐
  17.   │ファイル名    │内容                                          │
  18.   ├───────┼───────────────────────┤
  19.   │cci     .exp  │CCI 本体実行プログラム                        │
  20.   │cci     .doc  │説明ファイル(本ファイル)                    │
  21.   │              │                                              │
  22.   │runcci  .bat  │CCI プログラム実行用バッチファイル            │
  23.   │ccilib  .h    │CCI プログラム用ヘッダファイル                │
  24.   │hello   .cci  │CCI プログラムサンプル(文字列表示)          │
  25.   │hello2  .cci  │CCI プログラムサンプル(文字列表示2)        │
  26.   │itmlist .cci  │CCI プログラムサンプル(アイテム情報表示)    │
  27.   │install .cci  │CCI プログラムサンプル(インストラーラー)    │
  28.   │find    .cci  │CCI プログラムサンプル(パターン検索)        │
  29.   │find2   .cci  │CCI プログラムサンプル(パターン検索2)       │
  30.   │tifload .cci  │CCI プログラムサンプル(TIF データ表示)      │
  31.   │eupplay .cci  │CCI プログラムサンプル(EUP データ演奏)      │
  32.   └───────┴───────────────────────┘
  33.  
  34.     ※  プリプロセッサcpp.exe はフリーソフトウェアコレクション6に
  35.         収録されています。
  36.  
  37.  
  38. **************************************************************************
  39. ☆  使用,転載,再配付について
  40. **************************************************************************
  41.  
  42.  このプログラムは著作権は放棄していません。
  43.  以下の条件に従って自由に使用してください。
  44.  
  45.     1.  著作権表示を変更しないこと。
  46.     2.  このプログラムを使用したことによって生じた損害はまったく保証
  47.       しない。
  48.     3.  作者はこのプログラムに不備があっても,それを訂正する義務を負
  49.       わない。
  50.     4.  収録されているすべてのファイルを一括して配付すること。
  51.  
  52.  作者への連絡は,
  53.         NIFTY-Serve           ID:PAH01170
  54. まで願いします。
  55.  
  56.  
  57. **************************************************************************
  58. ☆  CCIとは?
  59. **************************************************************************
  60.  
  61.  CCI はC言語ライクなインタプリタ言語です。
  62.  もともとはMIYAZAKI氏が設計・開発されたもので,MIYAZAKI氏の許可をもらい
  63. TOWNS 用に移植しました。
  64.  CCI の言語仕様はC言語とほぼ同じですが,構造体がありません。また,インタ
  65. プリタという仕様上の制限もあります。
  66.  
  67.  ライブラリ関数として,C標準関数,TOWNS のグラフィックやサウンド機能を使
  68. うことができます。また,HEwin ライクなGUI インターフェースをサービスする関
  69. 数も用意されており,メニューやファイルダイアログも簡単に使うことができます。
  70.  
  71.  インタプリタといえばTOWNS ユーザーにはF-BASIC386がもっとも知られていると
  72. 思いますが,CCI はF-BASIC386とはプログラミング方法や環境はまったく異なりま
  73. す。
  74.  CCI はプログラム内部においてインタプリタとして動作しているというだけで,
  75. プログラミング的にはむしろコンパイラのほうに近いものとなっています。
  76.  
  77.  F-BASIC ならば,プログラムが完成していない状態でもとりあえず実行(RUN )
  78. させることができますが,CCI で作成したプログラムは動く程度には完成してい
  79. なければ実行させることはできません。
  80.  F-BASIC は,文法的な誤りがあったとしても,誤りがある箇所の直前までは動き
  81. ますが,CCI では文法的な誤りがあったらそのプログラムはまったく動きません。
  82.  
  83.  また,CCI で作成されたプログラム動作中はエラー検出はすべてユーザー任せな
  84. ので,誤ったプログミングをすると簡単に暴走します。
  85.  無限ループを作ってしまうと復帰する手段がありませんので,TOWNS をリセット
  86. するしかなくなります。F-BASIC386のように [BREAK]キーを押せばいつでも止まる
  87. とはいかないのです。
  88.  
  89.  CCI はプログラムにミスがあっても「○○行にエラーがあります」という表示を
  90. するだけで,詳しい内容などは教えてくれません。しかもその表示されているエラ
  91. ー箇所(ソースリストの行番号)も正しいとはかぎりません(たいていはそれより
  92. も前にエラーが発生しています)。
  93.  
  94.  なげやりな言い方をすれば,「正しく動くプログラムだけが動く」という仕様な
  95. のです。
  96.  
  97.  
  98. **************************************************************************
  99. ☆  CCIの使い方
  100. **************************************************************************
  101.  
  102. ■書式
  103.  
  104.     RUN386 CCI <オプション> <CCI プログラム名> [-- <パラメータ>]
  105.  
  106.     <オプション>
  107.         -codeSize <n>       コードサイズ指定(Kバイト単位,デフォルト
  108.                             64Kバイト)
  109.         -heepSize <nz>      ヒープサイズ指定(Kバイト単位,デフォルト
  110.                             64Kバイト)
  111.         -dspInit            画面初期化指定
  112.                             このオプションを指定すると,CCI.EXP 起動後
  113.                             に画面を自動的に初期化し,エラーメッセージ
  114.                             はグラフィック画面に表示されます。
  115.                             このオプションの指定がない場合には,画面の
  116.                             初期化は行われず,エラーメッセージ等はコン
  117.                             ソールに対して行われます。
  118.  
  119. 【解説】
  120.  CCI.EXP はTownsMENU にアイテム登録するか,コマンドモード(コンソール)
  121. からRUN386を介して起動,使用します。
  122.  CCI.EXP はCCI 用に作成されたプログラムを動作させるために必要なプログラ
  123. ム,つまりランタイムルーチン的なものです。
  124.  CCI.EXP を使うというのは,CCI 用に作成されたプログラムを動かすことです。
  125. よって,CCI.EXP を使う場合には,CCI 用に作成されたプログラムを予め用意し
  126. ておかなければなりません。
  127.  <CCI プログラム名>の部分には,CCI 用に作成されたプログラムのファイル名
  128. を指定します。拡張子.CCIは省略できます。
  129.  <オプション>はCCI.EXP の対するオプションパラメータです。-codeSize と-h
  130. eepSizeは通常は使われることはないと思います。もし,使う機会があるとすれば,
  131. 巨大なCCI プログラムを動かす場合や,実装メモリが少ないために少しでもフリー
  132. メモリを確保したい場合でしょう。
  133.  -dspInitは,CCI.EXP をTownsMENU やHEwin の子プロセスとして起動する場合
  134. に指定すると便利です。通常,CCI.EXP はエラーメッセージをコンソールに出力
  135. します。よって,TownsMENU やHEwin というコンソールのない環境でCCI.EXP を
  136. 使うと,エラーが起こった場合にエラーメッセージが表示されません。-dspInit
  137. を指定しておくと,エラーメッセージはグラフィック画面に出力されるので,き
  138. ちんと知ることができます。
  139.  
  140.  <パラメータ>には,CCI プログラム用のパラメータを指定します。CCI プログ
  141. ラムがパラメータを必要としない場合には,指定する必要はありません。
  142.  CCI プログラム用のパラメータを指定する場合には,「--」を必ず指定してく
  143. ださい。
  144.  
  145.  
  146. 【使用例】
  147.  
  148.     RUN386 CCI install
  149.         …install.cci を実行する。
  150.  
  151.     RUN386 -dspInit install
  152.         …install.cci を実行する。
  153.  
  154.     RUN386 find -- test.c
  155.         …find.cciを実行する。find.cciのパラメータとしてtest.cを指定
  156.  
  157.  
  158. ■  サンプルプログラムの使い方
  159.  
  160.  CCI で作成したサンプルプログラムをいくつか収録しています。
  161.  拡張子が.CCIとなっているファイルはすべてサンプルプログラムですので,CCI 
  162. プログラムを自分で作成しようと思っている方は参考にしてください。
  163.  どのプログラムをcpp (プリプロセッサ)を使わないと,実行できませんので
  164. 注意してください。
  165.  プリプロセッサcpp.exe はフリーソフトウェアコレクション6の¥TAROPYON¥
  166. HEWIN¥CCISRC の配下に収録されています。これを複写しておいてください。
  167.  たとえば,install.cciを動かすときには,まずcpp を使って変換します。
  168.  
  169.     cpp -d__CCI__  install.cci  > _install.cci
  170.  
  171.  上の例の場合,変換後のファイルは_install.cci となります。
  172.  CCI.EXP を使って実行するのは,この_install.cci です。
  173.  これを実行するときは,コマンドモードから,
  174.  
  175.     RUN386 cci _install
  176.  
  177. とします。
  178.  TownsMENU にアイテム登録してから実行するときも,パラメータにはcpp で変換
  179. したプログラムのファイル名を指定してください。ファイル名はなるべくドライブ
  180. 名とルートから指定したフルパスで指定してください。
  181.  
  182.     アイテム登録時のパラメータの例:    E:¥CCI¥_install.cci
  183.  
  184.  サンプルプログラムとして収録されているCCI プログラムの中には,コマンドモ
  185. ードから使うことを前提に作成されているものがあります。
  186.  コマンドモード上の動作を前提に作成されたCCI プログラムをTownsMENU にアイ
  187. テム登録するときは,アイテムの種別を「MS-DOS」に指定してください。
  188.  HEwin からCCI を使う場合には,コマンドモードでの動作を前提にしたプログラ
  189. ムは正常に動かすことはできません。
  190.  
  191.  このようにCCI プログラムを動かすときには,いったんcpp を使う必要がありま
  192. す。このため,RUNCCI.BATというcpp を使ってからCCI.EXP を起動するバッチファ
  193. イルも用意しました。
  194.  RUNCCI.BATを利用すると,上のinstall.cci を動かす場合には,
  195.  
  196.     RUNCCI install
  197.  
  198. とすれば大丈夫です。
  199.  RUNCCI.BATをTownsMENU にアイテム登録して使うこともできます。
  200.  
  201.  RUNCCIを使った場合,2番目以降のパラメータはCCI プログラムのパラメータと
  202. なります。
  203.  たとえば,
  204.     RUNCCI find test.c
  205. は,
  206.     RUN386 cci find -- test.c
  207. となります。
  208.  
  209.     ※  RUNCCI.BAT はHEwin から利用することはできません。
  210.  
  211.  
  212. ●HELLO.CCI        :"Hello, world."を表示する
  213.  
  214.  hello.cci は"Hello, world."という文字列を画面に表示するプログラムです。
  215.  このプログラムはコマンドモードで使ってください。
  216.  
  217. 【書式】
  218.         RUNCCI hello
  219.  
  220. ●HELLO2.CCI      :"Hello, world."を表示する
  221.  
  222.  hello2.cciは"Hello, world."という文字列を画面に表示するプログラムです。
  223.  hello.cci と違い,コマンドモードでなくとも動作します。
  224.  
  225. 【書式】
  226.         RUNCCI hello2
  227.  
  228. ●ITMLIST.CCI    :アイテム登録情報表示プログラム
  229.  
  230.  itmlist.cci はカレントドライブ上のTMENU.ITMというファイルから,TownsME
  231. NU のアイテム登録情報を表示するプログラムです。
  232.  このプログラムはコマンドモードで使ってください。
  233.  
  234. 【書式】
  235.         RUNCCI itmlist
  236.  
  237. ●INSTALL.CCI    :インストーラーサンプル
  238.  
  239.  install.cci は,TownsOS V2.1用のインストーラー(インストールプログラム)
  240. のサンプルです。
  241.  install.cci を実行すると,「CCI のインストールを行いますか?」という確認
  242. のメッセージが表示されます。
  243.  「INSTALL : [実行]」というボタンを左クリックするとファイルダイアログが現
  244. れますので,インストール先に移動してください。
  245.  インストール先を指定すると,<CCI> という名前のディレクトリを作成してもい
  246. いかどうか尋ねてきます。ディレクトリを作成してもいい場合は,「MKDIR : [実
  247. 行]」 を左クリックしてください。「CANCEL : [取消]」 を左クリックすると,最
  248. 初のインストールの確認に戻ります。
  249.  ディレクトリが既に存在している場合は,ディレクトリを作成してもいいかかど
  250. うかの確認は行われません。
  251.  次に,本当にインストールしてもいいかどうか確認してきます。ここで,「INST
  252. ALL : [実行]」を左クリックするとインストールが開始されます。
  253.  具体的には,CCI.EXP とCCI.MAN をインストール先のディレクトリに複写します。
  254.  ファイルの複写が正常に終わると,アイテム登録が行われます。
  255.  
  256.  このように,install.cci は同じinstall.cci とディレクトリ上にある,CCI.EXP
  257. とCCI.MAN の2つのファイルをユーザーが指定したディレクトリに複写し,CCI.EXP
  258. をTownsMENU にアイテム登録をするプログラムです(ただし,このinstall.cci は
  259. サンプルプログラムのため,アイテム登録されたCCIを実行することはできません)。
  260.  複写するファイル名を変更すれば,他のプログラムのインストーラとして利用でき
  261. ます。
  262.  
  263. 【書式】
  264.         RUNCCI install
  265.  
  266. ●FIND.CCI          :パターン検索(コンソール用)
  267.  
  268.  find.cciはテキストファイルの中から,任意の検索パターンを探し,検索パター
  269. ンが見つかった行を表示するプログラムです。
  270.  検索パターンには,正規表現が利用できます。
  271.  このプログラムはコマンドモードで使ってください。
  272.  
  273. 【書式】
  274.         RUNCCI find <検索パターン> <ファイル名>
  275.  
  276. 【使用例】
  277.         RUNCCI find buf find.cci
  278.  
  279.  find.cciの中から,"buf" という文字列が含まれている行を表示する。
  280.  
  281. ●FIND2.CCI        :パターン検索
  282.  
  283.  find2.cci はテキストファイルの中から,任意の検索パターンを探し,検索パタ
  284. ーンが見つかった行を表示するプログラムです。
  285.  検索パターンには,正規表現が利用できます。
  286.  
  287.  起動すると,次のメニューが現れます。
  288.  
  289.     (U) Upcase              大文字,小文字を区別するモードの切り換え
  290.     (P) Input pattern       検索パターンの入力
  291.     (F) Find                検索開始
  292.  
  293.  まず「(U) Upcase」で,アルファベットの大文字・小文字を区別するかしないか
  294. の動作を決めます。最初は,Upcase [off],区別するになっています。一度実行す
  295. ると,Upcase [on] ,区別しないに切り替わります。
  296.  次に,「(P) Input pattern」 で検索パターンを入力します。
  297.  最後に,「(F) Find」を選択・実行します。実行すると,ファイルダイアログが
  298. 現れるので,検索するファイルを選択・指定してください。ファイルは複数指定で
  299. きます。
  300.  検索が終了すると,見つかった行の一覧が表示されます。このとき,マウスの右
  301. スイッチを押すと,最初のメニューに戻ります。
  302.  メニュー選択時にマウスの右スイッチを押すと,終了します。
  303.  
  304. 【書式】
  305.     RUNCCI find2
  306.  
  307. ●TIFLOAD.CCI    :TIFFデータの表示 
  308.  
  309.  tifload.cci はTIF 形式の画像データファイルを表示するプログラムです。
  310.  起動すると,ファイルダイアログが現れるので表示したいTIFFデータファイルを
  311. 選択・指定してください。
  312.  データは,モノクロ,16色,256 色,32768 色に対応しています。
  313.  
  314. 【書式】
  315.     RUNCCI tifload
  316.  
  317.  
  318. **************************************************************************
  319. ☆  言語仕様
  320. **************************************************************************
  321.  
  322. ◎変数の型
  323.  
  324.     char, short, long, int
  325.     unsigned char, unsigned short, unsigned long, unsigned int
  326.     float, double
  327.  
  328.     ※signed intなどは必要無いのでサポ-トしていません。
  329.  
  330. ◎変数の定義
  331.  
  332.     int     i;
  333.     int    *ip;
  334.     char    buf[256];
  335.     char   *buf[256];
  336.     char    buf[2][5][6];
  337.     int     (*func)();
  338.  
  339.     などようにポインタやら配列の定義/参照ができます。
  340.  
  341. ◎クラス指定
  342.  
  343.     int         i;
  344.     static int  i;
  345.  
  346.     externはありません。
  347.  
  348. ◎変数の初期化
  349.  
  350.      スタック変数に対しては初期化はできませんがスタテックおよびグロ-バル
  351.     デ-タは初期化可能です。
  352.  
  353.      配列の場合,単純に左詰めで設定されされそのサイズのチェック及び自動割
  354.     り当ては行わられません。
  355.  
  356.     char    buf[] = { 1,2,3 };          /* これができません! */
  357.  
  358.      さらに変数のアドレスの初期化などもできません。
  359.  
  360.     int     *aaa[2] = { &dum, &dum2 };  /* これも駄目! */
  361.  
  362. ◎ステ-トメント
  363.  
  364.     if () ... else if () ... else ...
  365.     while () ...
  366.     do ... while ();
  367.     for ( ; ; ) ...
  368.     switch() case .. default..
  369.     break;
  370.     return;
  371.     goto ... LABEL:
  372.  
  373.     ほぼC言語と同じです
  374.  
  375. ◎演算
  376.  
  377.     (int ...)       型のキャスト
  378.     sizeof()        型のサイズ
  379.     sizeof ...      変数のサイズ(一次指定のみ)
  380.     xxx(...)        関数の呼び出し
  381.     &&, ||,
  382.     &, |, ^,
  383.     +, -, *, /, %,
  384.     >>, <<,
  385.     ==, !=
  386.     <, >,
  387.     <=, >=
  388.     !, ~, -
  389.     ? .. : ..
  390.     =
  391.     &=, |=, ^=,
  392.     +=, -=,
  393.     *=, /=, %=,
  394.     >>=, <<=,
  395.     ++, --,
  396.     * xx, & xx
  397.     xx [ nn ]
  398.  
  399.     これもほぼC言語と同じです
  400.  
  401. ◎プリプロセッサ
  402.  
  403.      プリプロセッサ命令は一切サポ-トしていません。
  404.     事前にcpp 等のプリプロセッサで処理しなければいけません
  405.  
  406.      ただしプロプロセッサに対応したエラ-処理時のソ-ス行表示を行う為の処
  407.     理のみしています。
  408.  
  409. ●注意
  410.  
  411.      このインタプリタは1パスで処理しています。したがって変数および関数は
  412.     参照される前に定義が必要です
  413.  
  414.      型チェックやメモリチェックなどはほとんどしていません。したがってポイ
  415.     ンタの間違った参照などで簡単に暴走します!
  416.  
  417.  
  418. **************************************************************************
  419. ☆  ライブラリ関数
  420. **************************************************************************
  421.  
  422.  CCI には,C標準ライブラリにある関数や,TOWNS 用の各種ライブラリ関数が内
  423. 蔵されています。
  424.  関数については,関数一覧を参照してください。
  425.  
  426.  このCCI に内蔵されているメニューやファイルダイアログ等のGUI 関連の機能は
  427. すべて16色画面モードで動作するように作られています。32768 色と 256色といっ
  428. た画面モードでは,これらの機能は使えませんので注意してください。
  429.  ただし,2画面合成モードで片方の画面を 32768色で使い,16色画面モードでメ
  430. ニューやファイルダイアログを動かしたり,一時的に画面を 256色画面モードに切
  431. り換えて使うことはできます。
  432.  
  433.  
  434. **************************************************************************
  435. ☆  最後に,
  436. **************************************************************************
  437.  
  438.  
  439.  CCI のオリジナルはMIYAZAKI 氏が作成されました。
  440.  CCI の作成にあたって,は森公一郎氏の作成されたKM-yacc ver 2.0 をHigh Cで
  441. 再コンパイルしたものを利用させていただきました。
  442.  CCI の浮動小数点演算,多次元配列,その他のバグフィクスは,EAST氏によるも
  443. のです。
  444.  MIYAZAKI氏,森公一郎氏,EAST氏にはこの場を借りてお礼申し上げます。
  445.  
  446.